package com.rq.base.net;

import com.rq.base.ui.impl.BaseView;

import java.util.Map;

/**
 * 类似于www.abc.com/.../def ( ... 为不确定数据的)，data 填充带有大括号为key的数据进行替换，如
 * path = www.abc.com/{way}/def ;
 * param.open("{way}","realMethod");
 * param.open("otherParamKey","otherParamValue");
 *
 * 最终得到的结果为：path = www.abc.com/realMethod/def
 * param.size()=    1   ; 最终只剩下key为 otherParamKey 的参数
 *
 * 类似的  以中括号 [ 开头的 data 参数会取出填到请求头中（heads）
 */
public interface HttpProxy {
    /**
     *
     * @param path      下载地址
     * @param savePath  下载后保存的本地地址,请求前需要先获取读写权限
     */
    void download(String path, String savePath, Map<String, String> heads, Map<String, Object> param, HttpThreadManager.DownListener listener);

    <T> void post(String url, Map<String, String> heads, Map<String, Object> data, Class<T> callBackClass, BaseView callBackView, RequestType requestType);

    <T> void get(String url, Map<String, String> heads, Map<String, Object> data, Class<T> callBackClass, BaseView callBackView, RequestType requestType);
}
